var express = require('express')

var User = require('./models/user')

var md5 = require('blueimp-md5')

var router = express.Router()

router.get('/', function(req, res){
	res.render('index.html', {
		user : req.session.user
	})
})

router.get('/login', function(req, res){
	if (req.session.user) {
		return res.redirect('/')
	}
	res.render('login.html')
})

router.post('/login', function(req, res, next){
	User.findOne({
		email : req.body.email
	}).then(user=>{
		if ( ! user) {
			return res.status(200).json({
				err_code:1,
				err_msg:'email或者密码不正确'
			})
		}
		var password = md5(req.body.password)
		if (password != user.password) {
			return res.status(200).json({
				err_code:1,
				err_msg:'email或者密码不正确'
			})
		}
		req.session.user = user
		res.status(200).json({
			err_code:0,
			err_msg:'OK'
		})
	},err=>next(err))
})

router.get('/register', function(req, res){
	if (req.session.user) {
		return res.redirect('/')
	}
	res.render('register.html')
})

router.post('/register', function(req, res, next){
	User.findOne({
		$or : [{"email" : req.body.email}, {"nickname" : req.body.nickname}]
	}).then(user=>{
		if (user) {
			return res.status(200).json({
				err_code:1,
				err_msg:'email或者呢称已经存在'
			})
		}
		// 对密码进行 md5 重复加密
		req.body.password = md5(req.body.password)
		new User(req.body).save(function(err, user){
			if (err) {
				return next(err)
			}
			// 注册成功，使用 Session 记录用户的登陆状态
			req.session.user = user

			// Express 提供了一个响应方法：json
      		// 该方法接收一个对象作为参数，它会自动帮你把对象转为字符串再发送给浏览器
			res.status(200).json({
				err_code:0,
				err_msg:'OK'
			})
		})
	},err=>next(err))
})

router.get('/logout', function(req, res){
	req.session.user = null

	delete req.session.user

	res.redirect('/login')
})

module.exports = router